package net.wofly.right.service;

import java.util.List;

import net.wofly.common.persistence.PageWrapper;
import net.wofly.common.util.ReturnBean;
import net.wofly.right.domain.FuncList;
import net.wofly.right.dto.FuncModuleDto;
import net.wofly.right.util.FuncModule;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;

public interface IFuncListService {

	/**
	 * 增加或修改
	 * 
	 * @param entity
	 * @return
	 */
	public FuncList save(FuncList entity);

	/**
	 * 删除
	 * 
	 * @param entity
	 * @return
	 */
	public void delete(FuncList entity);

	/**
	 * 根据主键ID删除
	 * 
	 * @param key
	 * @return
	 */
	public void delete(String key);

	/**
	 * 根据主键查询
	 * 
	 * @param key
	 * @return
	 */
	public FuncList findOne(String key);
	
	Page<FuncList> findAll(Specification<FuncList> specification, Pageable pageable);
	
	List<FuncList> findByFuncUrl(String funcUrl);
	
	Page<FuncList> findByFuncNameAndFuncType(String funcName, Integer funcType, Pageable pageable);
	
	public List<FuncList> save(List<FuncList> entityList) ;
	
	ReturnBean<List<FuncModuleDto>> findAllFuncModules();
	
	/**
	 * 添加功能
	 * @param funcList
	 * @return
	 */
	ReturnBean<FuncList> addFuncList(String funcName,String funcModule,Integer funcType,String funcCode, String funcUrl,String descp);
	
	/**
	 * 修改功能
	 * @param funcList
	 * @return
	 */
	ReturnBean<FuncList> modifyFuncList(FuncList funcList);
	
	/**
	 * 根据条件查询功能列表
	 * @param funcListName
	 * @param funcType
	 * @return
	 */
	ReturnBean<PageWrapper<FuncList>> getFuncListByCond(String funcListName, Integer funcType, Integer pageNum, Integer pageSize);

	/**
	 * 根据功能类型获取功能列表
	 *
	 * @param funcType
	 * @param pageable
     * @return
     */
	Page<FuncList> findPageByFuncType(Integer funcType, Pageable pageable);
}
